<script language="csharp" runat="server">
private struct Dados
{
    public int ID;
    public string Nome;
    public int Idade;
}

protected void Page_Load(object sender, EventArgs e)
{
    Dados[] dados = new Dados[3];
    int id = -1;
    string nome = "";
    
    #region Banco de Dados
    dados[0] = new Dados();
    dados[0].ID = 1;
    dados[0].Nome = "Fulano";
    dados[0].Idade = 21;
    
    dados[1] = new Dados();
    dados[1].ID = 2;
    dados[1].Nome = "Beltrano";
    dados[1].Idade = 31;
    
    dados[2] = new Dados();
    dados[2].ID = 3;
    dados[2].Nome = "Sicrano";
    dados[2].Idade = 41;
    #endregion    
    
    #region Cabecalho
    Response.AddHeader("Content-Type", "text/xml");
    Response.Write("<?xml version=\"1.0\"  encoding=\"iso-8859-1\"?>");
    Response.Write("<Estrutura>");
    Response.Write("<Colunas>");
    Response.Write("<ID tipo=\"number\"/>");
    Response.Write("<Nome tipo=\"string\"/>");
    Response.Write("<Idade tipo=\"number\"/>");
    Response.Write("</Colunas>");
    #endregion
    
    #region Lendo Parametros
    if(Request.HttpMethod == "GET")
    {
        if(Request.QueryString["id"] != null) id = Convert.ToInt32(Request.QueryString["id"]);
    }
    else if(Request.HttpMethod == "POST")
    {
        if(Request.Form["nome"] != null) nome = Request.QueryString["nome"];
    }
    #endregion
    
    #region Enviando Dados
    Response.Write("<Conteudo>");
    for(int x = 0; x < dados.Length; x++)
    {
        if(id != -1 && id != dados[x].ID) continue;
        if(nome != "" && nome != dados[x].Nome) continue;
        
        Response.Write("<Registro>");
        Response.Write("<ID>" + dados[x].ID + "</ID>");
        Response.Write("<Nome>" + dados[x].Nome + "</Nome>");
        Response.Write("<Idade>" + dados[x].Idade + "</Idade>");
        Response.Write("</Registro>");
    }
    Response.Write("</Conteudo>");
    #endregion
    
    Response.Write("</Estrutura>");
}
</script>